//每次对promise调用then都会创建一个新的promise；
//每个promise的决议都是下一个promise开始的标志


console.log("----------synchronize and asychronize------------------")
var p = Promise.resolve(
    {
        then:function(resolve,reject){
            setTimeout(function() {
                resolve(42);
            }, 10);
    }
})

p.then(
    function(value){
        console.log(value*2);
        //如果返回的依然是一个异步的，则需要创建一个异步的promise返回回去
        return new Promise(function(resolve,reject){
            setTimeout(function() {
                resolve(value);
            }, 100);
        })
    },
    function(){
        console.log("error");
    }
)
.then(function(value){
    console.log(value*3);
    return Promise.resolve(
        {
            then:function(resolve,reject){
                setTimeout(function() {
                    resolve("the value in the promise:"+value*3);
                }, 100);
            }
        }
    )
})
.then(
    function(value){
        console.log(value+"!!");
    }
)